﻿#define _CRT_SECURE_NO_WARNINGS 1
#include  <stdio.h>


//给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一
//最高位数字存放在数组的首位， 数组中每个元素只存储单个数字
//你可以假设除了整数 0 之外，这个整数不会以零开头

//输入：digits = [1, 2, 3]
//输出：[1, 2, 4]      


//输入：[9]
//输出：[1,0]

//int* plusOne(int* digits, int digitsSize, int* returnSize)
//{
//    int i = 0;
//    for (i = digitsSize - 1; i >= 0; --i)
//    {
//        digits[i] += 1;
//        if (digits[i] != 10)
//        {
//            *returnSize = digitsSize;
//            return digits;
//        }
//        else
//        {
//            digits[i] = 0;
//        }
//    }
//    int* ans = (int*)malloc(sizeof(int) * (digitsSize + 1));  //只要一直加0或者一位数变两位数，就创建新数组
//    memset(ans, 0, sizeof(int) * (digitsSize + 1));
//    ans[0] = 1;
//    *returnSize = digitsSize + 1;
//    return ans;
//}













//已知函数 signFunc(x) 将会根据 x 的正负返回特定值：
//
//如果 x 是正数，返回 1 
//如果 x 是负数，返回 - 1 
//如果 x 是等于 0 ，返回 0 
//给你一个整数数组 nums 令 product 为数组 nums 中所有元素值的乘积
//返回 signFunc(product) 

//int arraySign(int* nums, int numsSize) //根据正负号改变标记变量就好
//{
//    int i = 0, signfunc = 1;
//    for (i = 0; i < numsSize; ++i)
//    {
//        if (nums[i] == 0)
//        {
//            return 0;
//        }
//        else if (nums[i] < 0)
//        {
//            signfunc = -signfunc;
//        }
//    }
//    return signfunc;
//}






//给你一个数字数组 arr
//如果一个数列中，任意相邻两项的差总等于同一个常数，那么这个数列就称为 等差数列
//如果可以重新排列数组形成等差数列，请返回 true;否则,返回 false


//先排序，然后从头判断是不是等差数列
//bool canMakeArithmeticProgression(int* arr, int arrSize)
//{
//    int i, j;
//    for (i = 0; i < arrSize - 1; i++)
//    {
//        for (j = 0; j < arrSize - 1 - i; j++)
//        {
//            if (arr[j] > arr[j + 1])
//            {
//                int tmp = arr[j];
//                arr[j] = arr[j + 1];
//                arr[j + 1] = tmp;
//            }
//        }
//    }
//    i = 1;
//    int flag = arr[i] - arr[0];
//    for (i = 2; i < arrSize; i++)
//    {
//        if ((arr[i] - arr[i - 1]) != flag)
//        {
//            return false;
//        }
//    }
//    return true;
//}





//如果数组是单调递增或单调递减的，那么它是 单调 的
//如果对于所有 i <= j，nums[i] <= nums[j]，那么数组 nums 是单调递增的
//如果对于所有 i <= j，nums[i] > = nums[j]，那么数组 nums 是单调递减的
//当给定的数组 nums 是单调数组时返回 true，否则返回 false


 
//bool isMonotonic(int* nums, int numsSize)   //两个单调变量，如果递增，则递减的变成false，反之
                                             //最后都变成false的话，说明不是递增也不是递减，那就直接return false
//{
//    int i;
//    bool increasing = true;     
//    bool decrease = true;
//
//    for (i = 0; i < numsSize - 1; ++i)
//    { 
//        if (nums[i] > nums[i + 1])
//        {
//            increasing = false;
//        }
//        else if (nums[i] < nums[i + 1])
//        {
//            decrease = false;
//        }
//    }
//    if (!decrease && !increasing)
//    {
//        return false;
//    }
//    return true;
//}





int main()
{


	return 0;
}